from fastapi import APIRouter
from pydantic import BaseModel
from crypto_utils import encrypt_token
from utils import create_json_response

# 创建登录路由实例
router = APIRouter()

class LoginRequest(BaseModel):
    """登录请求数据模型"""
    username: str  # 用户名，必须是字符串类型
    password: str  # 密码，必须是字符串类型

@router.post("/login")
async def login(request: LoginRequest):
    """
    用户登录接口
    
    功能说明：
    - 验证用户名和密码是否正确
    - 生成加密的JWT token用于身份验证
    - 返回统一格式的JSON响应
    
    参数：
    - request: LoginRequest对象，包含username和password字段
    
    返回：
    - error: 错误信息，成功时为空字符串
    - token: 加密后的身份验证token
    """
    # 验证用户名和密码是否匹配预设值
    if request.username == "13800138000" and request.password == "123456":
        # 构造登录信息字符串
        login_data = f"{request.username}:{request.password}"
        # 使用加密算法生成token
        token = encrypt_token(login_data)
        # 返回成功响应
        return create_json_response({
            "error": "",  # 无错误
            "token": token  # 返回加密token
        })
    else:
        # 登录失败，返回错误信息
        return create_json_response({
            "error": "错误的账户或密码",  # 错误提示
            "token": ""  # 空token
        })